﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Osiptel.HECO.BE;
using System.Data.OracleClient;
using System.Data;

namespace Osiptel.HECO.DL
{
    public class TipoSubtipoDL
    {
        public List<TipoSubtipoBE> ObtenerSubTipoByTipo(int idTipo)
        {
            try
            {
                using (OracleCommand cmd = new OracleCommand())
                {
                    cmd.CommandText = "PKG_HECO_GLOBAL.SP_LISTAR_SUBTIPO_BY_TIPO";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("pIdTipo", OracleType.Number).Value = idTipo;
                    cmd.Parameters.Add("oListado", OracleType.Cursor).Direction = ParameterDirection.Output;
                    using (DL_CONEXION NewConexion = new DL_CONEXION())
                    {
                        try
                        {
                            NewConexion.retOpen();
                            cmd.Connection = NewConexion.retConexion();
                            TipoSubtipoBE objTipoSubtipoBE;
                            List<TipoSubtipoBE> listaTipoSubtipo = new List<TipoSubtipoBE>();
                            using (OracleDataReader objDRTipoSubtipo = cmd.ExecuteReader())
                            {
                                while (objDRTipoSubtipo.Read())
                                {
                                    objTipoSubtipoBE = new TipoSubtipoBE();
                                    objTipoSubtipoBE.P05Tipo = Convert.ToInt32(objDRTipoSubtipo["P05Tipo"]);
                                    objTipoSubtipoBE.P06SubTipo = Convert.ToInt32(objDRTipoSubtipo["P06Subtipo"]);
                                    objTipoSubtipoBE.P06SubTipoDesc = Convert.ToString(objDRTipoSubtipo["P06SubtipoDesc"]);
                                    listaTipoSubtipo.Add(objTipoSubtipoBE);
                                }
                                objDRTipoSubtipo.Close();
                            }
                            NewConexion.retClose();
                            return listaTipoSubtipo;
                        }
                        catch (Exception ex)
                        {
                            string error = ex.ToString();
                            List<TipoSubtipoBE> listaTipoSubtipo = new List<TipoSubtipoBE>();
                            return listaTipoSubtipo;
                        }
                        finally
                        {
                            if (NewConexion.conexion.State == ConnectionState.Open) NewConexion.retClose();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
